package com.supermarket.manage.provider.api.ucenter;

import com.supermarket.manage.common.dto.ucenter.request.RegisterParams;
import com.supermarket.manage.common.dto.ucenter.request.UserParams;
import com.supermarket.manage.common.pojo.MyUser;

import java.util.List;

/**
 * @author Faxon
 * @version 1.0
 * @date 2020-02-14 19:36
 **/
public interface UserService {

    /**
     * 根据用户名获取用户信息
     *
     * @param username
     * @return
     */
    MyUser getUserByUsernameWithNoPermission(String username);

    /**
     * 根据用户名获取用户信息(返回权限信息)
     *
     * @param username
     * @return
     */
    MyUser getUserByUsername(String username);

    /**
     * 用户登录（返回菜单栏列表）
     *
     * @param username
     * @return
     */
    MyUser userLoginByUsername(String username);

    /**
     * 根据用户id 获取 用户信息
     *
     * @param userId
     * @return
     */
    MyUser getUserByUserId(Long userId);

    /**
     * 根据用户id 修改密码
     *
     * @param id
     * @param newPassword
     * @return
     */
    Boolean updatePasswordById(Long id, String newPassword);

    /**
     * 根据用户id 获取用户名
     *
     * @param id
     * @return
     */
    String getUsernameByUserId(Long id);

    /**
     * 根据用户名 获取 用户人数
     *
     * @param username
     * @return
     */
    Integer getCountByUsername(String username);

    /**
     * 更新用户信息
     *
     * @param newUser
     * @return
     */
    Boolean updateUserById(MyUser newUser);

    /**
     * 根据电话获取用户数量
     *
     * @param phone
     * @return
     */
    Integer getCountByPhone(String phone);

    /**
     * 用户、客户注册
     *
     * @param user
     * @return
     */
    Boolean register(RegisterParams user);

    /**
     * 添加用户
     *
     * @param user
     * @return 返回主键
     */
    Integer insertUser(MyUser user);

    /**
     * 绑定手机号
     *
     * @param user
     * @return
     */
    Boolean bindPhone(UserParams user);

    /**
     * 解绑手机号
     *
     * @param params
     * @return
     */
    Boolean untiePhone(UserParams params);

    /**
     * 根据buyerId获取用户
     *
     * @param buyerId
     * @return
     */
    List<MyUser> getUserByBuyerId(String buyerId);
}
